home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Programming / AmigaTalk / Intuition / Gadget.st < prev    next >
Text File  |  2000-05-03  |  11KB  |  386 lines

  1. "------------------------------------------------------------------"
  2. " Gadget Class is an abstract class.  The user has to use the other"
  3. " classes in this file for concrete Amiga Gadgets.                 "
  4. "------------------------------------------------------------------"
  5.  
  6. Class Gadget :Glyph
  7. ! gadgetType gadgetName !
  8. [
  9.    gadgetTypeIs
  10.       gadgetType <- <primitive 183 2 0 6 gadgetName>.
  11.       (gadgetType == nil)    "NOT a BoolGadget, Check some more:"
  12.          ifTrue: [gadgetType <- <primitive 183 2 1 6 gadgetName>.
  13.                   (gadgetType == nil)    "Has to be a PropGadget:"
  14.                    ifTrue: [gadgetType <- <primitive 183 2 2 6 gadgetName>]
  15.                  ].
  16.       ^ gadgetType
  17. |
  18.    gadgetNameIs
  19.       ^ gadgetName
  20. |
  21.    new: newGadgetName
  22.       <primitive 183 1 0 newGadgetName>.
  23.       gadgetName <- newGadgetName.
  24.       ^ self
  25. ]
  26.  
  27. "-----------------------------------------------------------------------"
  28. " BoolGadget Class implements messages specific only to boolean gadgets."
  29. "-----------------------------------------------------------------------"
  30.  
  31. Class BoolGadget :Gadget
  32.    leftEdge topEdge width height flags activation gadgetType gadgetID
  33.    iTextName nextGadgetName renderName selectName gadgetName
  34. !
  35. [
  36.    new: newGadgetName
  37.       super    new: newGadgetName.
  38.       gadgetName <- super gadgetNameIs.
  39.       ^ self
  40. |
  41.    remove
  42.       <primitive 183 0 0 gadgetName>
  43. |
  44.    registerTo: windowTitle
  45.       <primitive 183 7 0 windowTitle gadgetName>
  46. |
  47.    setStartPoint: newPoint ! x y !  "newPoint  is leftEdge @ topEdge"
  48.       x <- newPoint x.
  49.       y <- newPoint y.
  50.       <primitive 183 3 0 0 x gadgetName>.
  51.       <primitive 183 3 0 1 y gadgetName>.
  52.       leftEdge <- x.
  53.       topEdge  <- y
  54. |   
  55.    setGadgetSizeTo: sizePoint ! w h ! "sizePoint is width @ height"
  56.       w <- sizePoint x.
  57.       h <- sizePoint y.
  58.       <primitive 183 3 0 2 w gadgetName>.
  59.       <primitive 183 3 0 3 h gadgetName>.
  60.       width  <- w.
  61.       height <- h
  62. |
  63.    getStartPoint
  64.       leftEdge <- <primitive 183 2 0 0 gadgetName>.
  65.       topEdge  <- <primitive 183 2 0 1 gadgetName>.
  66.       ^ leftEdge @ topEdge
  67. |
  68.    getGadgetSize
  69.       width  <- <primitive 183 2 0 2 gadgetName>.
  70.       height <- <primitive 183 2 0 3 gadgetName>.
  71.       ^ width @ height
  72. |
  73.    getFlags
  74.       ^ flags <- <primitive 183 2 0 4 gadgetName>
  75. |
  76.    setFlags: newFlags
  77.       <primitive 183 3 0 4 newFlags gadgetName>.
  78.       flags <- newFlags
  79. |
  80.    getActivation
  81.       ^ activation <- <primitive 183 2 0 5 gadgetName>
  82. |
  83.    setActivation: newActivation
  84.       <primitive 183 3 0 5 newActivation gadgetName>.
  85.       activation <- newActivation
  86. |
  87.    "only needed because of GZZGADGET & REQGADGET type flags."
  88.    getGadgetType
  89.       ^ gadgetType <- <primitive 183 2 0 6 gadgetName>
  90. |
  91.    "only needed because of GZZGADGET & REQGADGET type flags."
  92.    setGadgetType: newGadgetType
  93.       <primitive 183 3 0 6 newGadgetType gadgetName>.
  94.       gadgetType <- newGadgetType
  95. |
  96.    getGadgetID
  97.       ^ gadgetID <- <primitive 183 2 0 7 gadgetName>
  98. |
  99.    setGadgetID: newGadgetID
  100.       <primitive 183 3 0 7 newGadgetID gadgetName>.
  101.       gadgetID <- newGadgetID
  102. |
  103.    getNextGadgetName
  104.       ^ nextGadgetName <- <primitive 183 2 0 8 gadgetName>
  105. |
  106.    setNextGadgetName: newNextGadgetName
  107.       <primitive 183 3 0 8 newNextGadgetName gadgetName>.
  108.       nextGadgetName <- newNextGadgetName
  109. |
  110.    getITextName
  111.       ^ iTextName <- <primitive 183 2 0 9 gadgetName>
  112. |
  113.    setITextName: newITextName
  114.       <primitive 183 3 0 9 newITextName gadgetName>.
  115.       iTextName <- newITextName
  116. |
  117.    getRenderName
  118.       ^ renderName <- <primitive 183 2 0 10 gadgetName>
  119. |
  120.    setRenderName: newRenderName
  121.       <primitive 183 3 0 10 newRenderName gadgetName>.
  122.       renderName <- newRenderName
  123. |
  124.    getSelectName
  125.       ^ selectName <- <primitive 183 2 0 11 gadgetName>
  126. |
  127.    setSelectName: newSelectName
  128.       <primitive 183 3 0 11 newSelectName gadgetName>.
  129.       selectName <- newSelectName
  130. ]
  131.  
  132. "---------------------------------------------------------------------"
  133. " StrGadget Class implements messages specific only to string gadgets."
  134. "---------------------------------------------------------------------"
  135.  
  136. Class StrGadget :Gadget
  137.    leftEdge topEdge width height flags activation gadgetType gadgetID
  138.    iTextName nextGadgetName renderName selectName bufferSize gadgetName
  139. !
  140. [
  141.    changeBufferSize: newSize
  142.       <primitive 183 5 newSize gadgetName>.
  143.       bufferSize <- newSize
  144. |
  145.    getBufferSize
  146.       ^ bufferSize <- <primitive 183 2 1 12 gadgetName>
  147. |
  148.    remove
  149.       <primitive 183 0 1 gadgetName>
  150. |
  151.    registerTo: windowTitle
  152.       <primitive 183 7 1 windowTitle gadgetName>
  153. |
  154.    setStartPoint: newPoint ! x y !
  155.       x <- newPoint x.
  156.       y <- newPoint y.
  157.       <primitive 183 3 1 0 x gadgetName>.
  158.       <primitive 183 3 1 1 y gadgetName>.
  159.       leftEdge <- x.
  160.       topEdge  <- y
  161. |   
  162.    setGadgetSize: sizePoint ! w h !
  163.       w <- sizePoint x.
  164.       h <- sizePoint y. 
  165.       <primitive 183 3 1 2 w gadgetName>.
  166.       <primitive 183 3 1 3 h gadgetName>.
  167.       width  <- w.
  168.       height <- h
  169. |
  170.    getStartPoint
  171.       leftEdge <- <primitive 183 2 1 0 gadgetName>.
  172.       topEdge  <- <primitive 183 2 1 1 gadgetName>.
  173.       ^ leftEdge @ topEdge
  174. |
  175.    getGadgetSize
  176.       width  <- <primitive 183 2 1 2 gadgetName>.
  177.       height <- <primitive 183 2 1 3 gadgetName>.
  178.       ^ width @ height
  179. |
  180.    getFlags
  181.       ^ flags <- <primitive 183 2 1 4 gadgetName>
  182. |
  183.    setFlags: newFlags
  184.       <primitive 183 3 1 4 newFlags gadgetName>.
  185.       flags <- newFlags
  186. |
  187.    getActivation
  188.       ^ activation <- <primitive 183 2 1 5 gadgetName>
  189. |
  190.    setActivation: newActivation
  191.       <primitive 183 3 1 5 newActivation gadgetName>.
  192.       activation <- newActivation
  193. |
  194.    "only needed because of GZZGADGET & REQGADGET type flags."
  195.    getGadgetType
  196.       ^ gadgetType <- <primitive 183 2 1 6 gadgetName>
  197. |
  198.    setGadgetType: newGadgetType
  199.       <primitive 183 3 1 6 newGadgetType gadgetName>.
  200.       gadgetType <- newGadgetType
  201. |
  202.    getGadgetID
  203.       ^ gadgetID <- <primitive 183 2 1 7 gadgetName>
  204. |
  205.    setGadgetID: newGadgetID
  206.       <primitive 183 3 1 7 newGadgetID gadgetName>.
  207.       gadgetID <- newGadgetID
  208. |
  209.    getNextGadgetName
  210.       ^ nextGadgetName <- <primitive 183 2 1 8 gadgetName>
  211. |
  212.    setNextGadgetName: newNextGadgetName
  213.       <primitive 183 3 1 8 newNextGadgetName gadgetName>.
  214.       nextGadgetName <- newNextGadgetName
  215. |
  216.    getITextName
  217.       ^ iTextName <- <primitive 183 2 1 9 gadgetName>
  218. |
  219.    setITextName: newITextName
  220.       <primitive 183 3 1 9 newITextName gadgetName>.
  221.       iTextName <- newITextName
  222. |
  223.    getRenderName
  224.       ^ renderName <- <primitive 183 2 1 10 gadgetName>
  225. |
  226.    setRenderName: newRenderName
  227.       <primitive 183 3 1 10 newRenderName gadgetName>.
  228.       renderName <- newRenderName
  229. |
  230.    getSelectName
  231.       ^ selectName <- <primitive 183 2 1 11 gadgetName>
  232. |
  233.    setSelectName: newSelectName
  234.       <primitive 183 3 1 11 newSelectName gadgetName>.
  235.       selectName <- newSelectName
  236. |
  237.    new: newGadgetName
  238.       super    new: newGadgetName.
  239.       gadgetName <- super gadgetNameIs.
  240.       self setGadgetType: 1.
  241.       ^ self
  242. ]
  243.  
  244. "------------------------------------------------------"
  245. " PropGadget Class implements messages specific only to"
  246. " proportional gadgets.                                "
  247. "------------------------------------------------------"
  248.  
  249. Class PropGadget :Gadget
  250.    leftEdge topEdge width height flags activation gadgetType gadgetID
  251.    iTextName nextGadgetName renderName selectName propFlags  hPot
  252.    vPot      hBody          vBody      gadgetName
  253. !
  254. [
  255.    modifyProps: newFlags hPot: hp vPot: vp hBody: hb
  256.                 vBody: vb windowName: windowTitle
  257.       <primitive 183 4 newFlags hp vp hb vb windowTitle gadgetName>.
  258.       flags <- newFlags.
  259.       hPot  <- hp.
  260.       vPot  <- vp.
  261.       hBody <- hb.
  262.       vBody <- vb
  263. |
  264.    setProps: newFlags hPot: hp vPot: vp hBody: hb vBody: vb
  265.       <primitive 183 6 newFlags hp vp hb vb gadgetName>.
  266.       flags <- newFlags.
  267.       hPot  <- hp.
  268.       vPot  <- vp.
  269.       hBody <- hb.
  270.       vBody <- vb
  271. |
  272.    remove
  273.       <primitive 183 0 2 gadgetName>
  274. |
  275.    registerTo: windowTitle
  276.       <primitive 183 7 2 windowTitle gadgetName>
  277. |
  278.    setStartPoint: newPoint ! x y !
  279.       x <- newPoint x.
  280.       y <- newPoint y.
  281.       <primitive 183 3 2 0 x gadgetName>.
  282.       <primitive 183 3 2 1 y gadgetName>.
  283.       leftEdge <- x.
  284.       topEdge  <- y
  285. |   
  286.    setGadgetSize: sizePoint ! w h !
  287.       w <- sizePoint x.
  288.       h <- sizePoint y.
  289.       <primitive 183 3 2 2 w gadgetName>.
  290.       <primitive 183 3 2 3 h gadgetName>.
  291.       width  <- w.
  292.       height <- h
  293. |
  294.    getStartPoint
  295.       leftEdge <- <primitive 183 2 2 0 gadgetName>.
  296.       topEdge  <- <primitive 183 2 2 1 gadgetName>.
  297.       ^ leftEdge @ topEdge
  298. |
  299.    getGadgetSize
  300.       width  <- <primitive 183 2 2 2 gadgetName>.
  301.       height <- <primitive 183 2 2 3 gadgetName>.
  302.       ^ width @ height
  303. |
  304.    getFlags
  305.       ^ flags <- <primitive 183 2 2 4 gadgetName>
  306. |
  307.    setFlags: newFlags
  308.       <primitive 183 3 2 4 newFlags gadgetName>.
  309.       flags <- newFlags
  310. |
  311.    getActivation
  312.       ^ activation <- <primitive 183 2 2 5 gadgetName>
  313. |
  314.    setActivation: newActivation
  315.       <primitive 183 3 2 5 newActivation gadgetName>.
  316.       activation <- newActivation
  317. |
  318.    "only needed because of GZZGADGET & REQGADGET type flags."
  319.    getGadgetType
  320.       ^ gadgetType <- <primitive 183 2 2 6 gadgetName>
  321. |
  322.    "only needed because of GZZGADGET & REQGADGET type flags."
  323.    setGadgetType: newGadgetType
  324.       <primitive 183 3 2 6 newGadgetType gadgetName>.
  325.       gadgetType <- newGadgetType
  326. |
  327.    getGadgetID
  328.       ^ gadgetID <- <primitive 183 2 2 7 gadgetName>
  329. |
  330.    setGadgetID: newGadgetID
  331.       <primitive 183 3 2 7 newGadgetID gadgetName>.
  332.       gadgetID <- newGadgetID
  333. |
  334.    getNextGadgetName
  335.       ^ nextGadgetName <- <primitive 183 2 2 8 gadgetName>
  336. |
  337.    setNextGadgetName: newNextGadgetName
  338.       <primitive 183 3 2 8 newNextGadgetName gadgetName>.
  339.       nextGadgetName <- newNextGadgetName
  340. |
  341.    getITextName
  342.       ^ iTextName <- <primitive 183 2 2 9 gadgetName>
  343. |
  344.    setITextName: newITextName
  345.       <primitive 183 3 2 9 newITextName gadgetName>.
  346.       iTextName <- newITextName
  347. |
  348.    getRenderName
  349.       ^ renderName <- <primitive 183 2 2 10 gadgetName>
  350. |
  351.    setRenderName: newRenderName
  352.       <primitive 183 3 2 10 newRenderName gadgetName>.
  353.       renderName <- newRenderName
  354. |
  355.    getSelectName
  356.       ^ selectName <- <primitive 183 2 2 11 gadgetName>
  357. |
  358.    setSelectName: newSelectName
  359.       <primitive 183 3 2 11 newSelectName gadgetName>.
  360.       selectName <- newSelectName
  361. |
  362.    getPropFlags
  363.       ^ propFlags <- <primitive 183 2 2 13 gadgetName>
  364. |
  365.    getHPot
  366.       ^ hPot <- <primitive 183 2 2 14 gadgetName>
  367. |
  368.    getVPot
  369.       ^ vPot <- <primitive 183 2 2 15 gadgetName>
  370. |
  371.    getHBody
  372.       ^ hBody <- <primitive 183 2 2 16 gadgetName>
  373. |
  374.    getVBody
  375.       ^ vBody <- <primitive 183 2 2 17 gadgetName>
  376. |
  377.    new: newGadgetName
  378.       super    new: newGadgetName.
  379.       gadgetName <- super gadgetNameIs.
  380.       self setGadgetType: 2.
  381.       ^ self
  382. ]
  383.